var i;
Object.defineProperty(exports, "__esModule", {
  value: true
});
var LogManager = require("AA_LogManager");
var ResLoader = require("AA_ResLoader");
var _ccclass = cc._decorator.ccclass;
var _def_ResKeeper = function (e) {
  function _creator() {
    var t = null !== e && e.apply(this, arguments) || this;
    t._autoRes = [];
    return t;
  }
  __extends(_creator, e);
  _creator.prototype._loadRes = function (e, t, o) {
    var n = this;
    return new Promise(function (i) {
      ResLoader.default.loadRes(e, t, o).then(function (e) {
        e && n.autoReleaseRes(e);
        i(e);
      });
    });
  };
  _creator.prototype.onDestroy = function () {
    var e = this._autoRes.map(function (e) {
      return e.name;
    });
    LogManager.LogMgr.debug("auto release all resources: " + JSON.stringify(e));
    this._releaseAutoRes();
  };
  _creator.prototype._releaseAutoRes = function () {
    for (var e = 0; e < this._autoRes.length; e++) {
      this._autoRes[e].decRef();
    }
    this._autoRes.length = 0;
  };
  _creator.prototype.autoReleaseRes = function (e) {
    if (this && this._autoRes) {
      e.addRef();
      this._autoRes.push(e);
    }
  };
  return __decorate([_ccclass], _creator);
}(cc.Component);
exports.default = _def_ResKeeper;